/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package agb.Modelo;

import agb.Conexion.Conexion;
import java.sql.*;
import java.util.ArrayList;
import java.util.Vector;

/**
 *
 * @author Administrator
     */
public class ProyectosComunicados {
    private int codPersona, codNivelGrado, codTipo, codAula, codProyecto, 
            codComunicado, codTema, codCurso, codGrado;
    private String nombre, formato, integrantes, descripcion, materiales,
            referencias, fecha, horaInicio, horaFin, lugar, titulo, curso, 
            tema, grado, seccion, nivel, tipo, persona, estado;

    @Override
    public String toString() {
        return "ProyectosComunicados{" + "codPersona=" + codPersona + ", codNivelGrado=" + codNivelGrado + ", codTipo=" + codTipo + ", codAula=" + codAula + ", codProyecto=" + codProyecto + ", codComunicado=" + codComunicado + ", codTema=" + codTema + ", codCurso=" + codCurso + ", codGrado=" + codGrado + ", nombre=" + nombre + ", formato=" + formato + ", integrantes=" + integrantes + ", descripcion=" + descripcion + ", materiales=" + materiales + ", referencias=" + referencias + ", fecha=" + fecha + ", horaInicio=" + horaInicio + ", horaFin=" + horaFin + ", lugar=" + lugar + ", titulo=" + titulo + ", curso=" + curso + ", tema=" + tema + ", grado=" + grado + ", seccion=" + seccion + ", nivel=" + nivel + ", tipo=" + tipo + ", persona=" + persona + ", estado=" + estado + '}';
    }

    public int getCodCurso() {
        return codCurso;
    }

    public void setCodCurso(int codCurso) {
        this.codCurso = codCurso;
    }
    
     public int getCodGrado() {
        return codGrado;
    }

    public void setCodGrado(int codGrado) {
        this.codGrado = codGrado;
    }

    /**
     * @return the codPersona
     */
    public int getCodPersona() {
        return codPersona;
    }

    /**
     * @param codPersona the codPersona to set
     */
    public void setCodPersona(int codPersona) {
        this.codPersona = codPersona;
    }

    /**
     * @return the codNivelGrado
     */
    public int getCodNivelGrado() {
        return codNivelGrado;
    }

    /**
     * @param codNivelGrado the codNivelGrado to set
     */
    public void setCodNivelGrado(int codNivelGrado) {
        this.codNivelGrado = codNivelGrado;
    }

    /**
     * @return the codTipo
     */
    public int getCodTipo() {
        return codTipo;
    }

    /**
     * @param codTipo the codTipo to set
     */
    public void setCodTipo(int codTipo) {
        this.codTipo = codTipo;
    }

    /**
     * @return the codAula
     */
    public int getCodAula() {
        return codAula;
    }

    /**
     * @param codAula the codAula to set
     */
    public void setCodAula(int codAula) {
        this.codAula = codAula;
    }

    /**
     * @return the codProyecto
     */
    public int getCodProyecto() {
        return codProyecto;
    }

    /**
     * @param codProyecto the codProyecto to set
     */
    public void setCodProyecto(int codProyecto) {
        this.codProyecto = codProyecto;
    }

    /**
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * @param nombre the nombre to set
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * @return the formato
     */
    public String getFormato() {
        return formato;
    }

    /**
     * @param formato the formato to set
     */
    public void setFormato(String formato) {
        this.formato = formato;
    }

    /**
     * @return the integrantes
     */
    public String getIntegrantes() {
        return integrantes;
    }

    /**
     * @param integrantes the integrantes to set
     */
    public void setIntegrantes(String integrantes) {
        this.integrantes = integrantes;
    }

    /**
     * @return the descripcion
     */
    public String getDescripcion() {
        return descripcion;
    }

    /**
     * @param descripcion the descripcion to set
     */
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    /**
     * @return the materiales
     */
    public String getMateriales() {
        return materiales;
    }

    /**
     * @param materiales the materiales to set
     */
    public void setMateriales(String materiales) {
        this.materiales = materiales;
    }

    /**
     * @return the referencias
     */
    public String getReferencias() {
        return referencias;
    }

    /**
     * @param referencias the referencias to set
     */
    public void setReferencias(String referencias) {
        this.referencias = referencias;
    }

    /**
     * @return the fecha
     */
    public String getFecha() {
        return fecha;
    }

    /**
     * @param fecha the fecha to set
     */
    public void setFecha(String fecha) {
        this.fecha = fecha;
    }

    /**
     * @return the horaInicio
     */
    public String getHoraInicio() {
        return horaInicio;
    }

    /**
     * @param horaInicio the horaInicio to set
     */
    public void setHoraInicio(String horaInicio) {
        this.horaInicio = horaInicio;
    }

    /**
     * @return the horaFin
     */
    public String getHoraFin() {
        return horaFin;
    }

    /**
     * @param horaFin the horaFin to set
     */
    public void setHoraFin(String horaFin) {
        this.horaFin = horaFin;
    }

    /**
     * @return the lugar
     */
    public String getLugar() {
        return lugar;
    }

    /**
     * @param lugar the lugar to set
     */
    public void setLugar(String lugar) {
        this.lugar = lugar;
    }

       public static ArrayList<ProyectosComunicados>  ListaTipoComunicados(){
        ProyectosComunicados oTipo = null;
        ArrayList<ProyectosComunicados> LTipos = new ArrayList<ProyectosComunicados>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "SELECT t.cod_tipocomunicado, t.nombre_tipocomunicado " +
                "FROM tipo_comunicado t " +
                "order by t.nombre_tipocomunicado" ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            rs = ps.executeQuery();
            while(rs.next()){
                oTipo = new ProyectosComunicados();
                oTipo.setCodTipo(rs.getInt(1));
                oTipo.setNombre(rs.getString(2));
                LTipos.add(oTipo);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LTipos;
    }
  public static boolean registroComunicado(ProyectosComunicados oComunicado){
        boolean rpta = false;
        Connection cn = null;

        PreparedStatement ps = null;

        String sql = "INSERT INTO comunicados(cod_comunicado, nombre_comunicado, descripcion_comunicado,             " +
                "fecha_comunicado, horainicio_comunicado, horafin_comunicado, lugar_comunicado,             " +
                "cod_persona, cod_nivelgrado, cod_tipocomunicado, cod_aula) " +
                "VALUES(nextval('COMUNICADO_SEQ'),?,?,to_date(?,'DD/MM/YYYY'),?,?, ?, ?,?,?,? )" ;
        try{
            cn = Conexion.getConexion();
            cn.setAutoCommit(false);
            ps = cn.prepareStatement(sql);
            ps.setString(1, oComunicado.getNombre());
            ps.setString(2, oComunicado.getDescripcion());
            ps.setString(3, oComunicado.getFecha());
            ps.setString(4, oComunicado.getHoraInicio());
            ps.setString(5, oComunicado.getHoraFin());
            ps.setString(6, oComunicado.getLugar());
            ps.setInt(7, oComunicado.getCodPersona());
            ps.setInt(8, oComunicado.getCodNivelGrado());
            ps.setInt(9, oComunicado.getCodTipo());
            ps.setInt(10, oComunicado.getCodAula());
            
            rpta = ps.executeUpdate()==1?true:false;
            if(rpta){
                Conexion.confirmarTransaccion(cn);
            }else{
                Conexion.anularTransaccion(cn);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return rpta;
    }

  public static boolean registroComunicadoSec(ProyectosComunicados oComunicado){
        boolean rpta = false;
        Connection cn = null;

        PreparedStatement ps = null;

        String sql = "INSERT INTO comunicados(cod_comunicado, nombre_comunicado, descripcion_comunicado,             " +
                "fecha_comunicado, horainicio_comunicado, horafin_comunicado, lugar_comunicado,             " +
                "cod_persona, cod_nivelgrado, cod_tipocomunicado, cod_aula, estado_comunicado) " +
                "VALUES(nextval('COMUNICADO_SEQ'),?,?,to_date(?,'DD/MM/YYYY'),?,?, ?, ?,?,?,?, 'A' )" ;
        try{
            cn = Conexion.getConexion();
            cn.setAutoCommit(false);
            ps = cn.prepareStatement(sql);
            ps.setString(1, oComunicado.getNombre());
            ps.setString(2, oComunicado.getDescripcion());
            ps.setString(3, oComunicado.getFecha());
            ps.setString(4, oComunicado.getHoraInicio());
            ps.setString(5, oComunicado.getHoraFin());
            ps.setString(6, oComunicado.getLugar());
            ps.setInt(7, oComunicado.getCodPersona());
            ps.setInt(8, oComunicado.getCodNivelGrado());
            ps.setInt(9, oComunicado.getCodTipo());
            ps.setInt(10, oComunicado.getCodAula());
            rpta = ps.executeUpdate()==1?true:false;
            if(rpta){
                Conexion.confirmarTransaccion(cn);
            }else{
                Conexion.anularTransaccion(cn);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return rpta;
    }
  
  public static ArrayList<ProyectosComunicados> listarComunicados(int codTipo)
  {
      ProyectosComunicados oComunicado = null;
        ArrayList<ProyectosComunicados> LComunicados = new ArrayList<ProyectosComunicados>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "SELECT C.cod_comunicado, P.apell_paterno || ' ' || P.apell_materno || ', ' || P.primer_nombre AS NOMBRE,        " +
                "C.nombre_comunicado " +
                "FROM comunicados C " +
                "INNER JOIN p_natural P ON C.cod_persona = P.cod_persona " +
                "WHERE C.cod_nivelgrado = ? " +
               
                "AND C.fecha_comunicado >= current_date " +
                "AND C.ESTADO_COMUNICADO = 'A' " +
                "ORDER BY C.fecha_comunicado" ;
        
        
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);     
            ps.setInt(1, codTipo);
            rs = ps.executeQuery();
            while(rs.next())
            {
                oComunicado = new ProyectosComunicados();
                oComunicado.setCodComunicado(rs.getInt(1));
                oComunicado.setNombre(rs.getString(2));
                oComunicado.setTitulo(rs.getString(3));
                LComunicados.add(oComunicado);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LComunicados;
  }
   public static ArrayList<ProyectosComunicados>  ListaCabeceraComunicadoPorNivelGradoSeccionTipo(int codNivelGrado, int codSeccion, int codTipo){
        ProyectosComunicados oComunicado = null;
        ArrayList<ProyectosComunicados> LComunicados = new ArrayList<ProyectosComunicados>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "SELECT C.cod_comunicado, P.apell_paterno || ' ' || P.apell_materno || ', ' || P.primer_nombre AS NOMBRE,        " +
                "C.nombre_comunicado " +
                "FROM comunicados C " +
                "INNER JOIN p_natural P ON C.cod_persona = P.cod_persona " +
                "WHERE C.cod_nivelgrado = ? " +
                "AND C.cod_aula = ? " +
                "AND C.cod_tipocomunicado = ? " +
                "AND C.fecha_comunicado >= current_date " +
                "AND C.ESTADO_COMUNICADO = 'A' " +
                "ORDER BY C.fecha_comunicado" ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codNivelGrado);
            ps.setInt(2, codSeccion);
            ps.setInt(3, codTipo);
            rs = ps.executeQuery();
            while(rs.next()){
                oComunicado = new ProyectosComunicados();
                oComunicado.setCodComunicado(rs.getInt(1));
                oComunicado.setNombre(rs.getString(2));
                oComunicado.setTitulo(rs.getString(3));
                LComunicados.add(oComunicado);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LComunicados;
    }

   public static ArrayList<ProyectosComunicados>  ListaCabeceraComunicadoPorNivelGradoSeccionTipoApoderado(String sqlRes, int codTipo){
        ProyectosComunicados oComunicado = null;
        ArrayList<ProyectosComunicados> LComunicados = new ArrayList<ProyectosComunicados>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "SELECT C.cod_comunicado, P.apell_paterno || ' ' || P.apell_materno || ', ' || P.primer_nombre AS NOMBRE,        " +
                "C.nombre_comunicado, G.nombre, A.nombre, N.nombre " +
                "FROM comunicados C " +
                "INNER JOIN p_natural P ON C.cod_persona = P.cod_persona " +
                "INNER JOIN nivel_grado NG ON NG.cod_nivelgrado = C.cod_nivelgrado " +
                "INNER JOIN grado G ON G.cod_grado = NG.cod_grado " +
                "INNER JOIN nivel N ON N.cod_nivel = NG.cod_nivel " +
                "INNER JOIN AULA A ON A.cod_aula = C.cod_aula " +
                " WHERE C.cod_tipocomunicado = ? " +
                "AND (" + sqlRes + " )  " +
                "AND C.ESTADO_COMUNICADO = 'A' " +
                "ORDER BY C.fecha_comunicado" ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codTipo);
            
            
            rs = ps.executeQuery();
            while(rs.next()){
                oComunicado = new ProyectosComunicados();
                oComunicado.setCodComunicado(rs.getInt(1));
                oComunicado.setNombre(rs.getString(2));
                oComunicado.setTitulo(rs.getString(3));
                oComunicado.setGrado(rs.getString(4));
                oComunicado.setSeccion(rs.getString(5));
                oComunicado.setNivel(rs.getString(6));
                LComunicados.add(oComunicado);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LComunicados;
    }



      public static ProyectosComunicados  ListaComunicadoPorCodComunicado(int codComunicado){
        ProyectosComunicados  oComunicado = new ProyectosComunicados();      
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "SELECT P.apell_paterno || ' ' || P.apell_materno || ', ' || P.primer_nombre AS NOMBRE, " +
                    "C.nombre_comunicado, C.descripcion_comunicado, to_char(C.fecha_comunicado,'DD/MM/YYYY'), C.horainicio_comunicado,        " +
                    "C.horafin_comunicado, C.lugar_comunicado " +
                    "FROM comunicados C " +
                    "INNER JOIN p_natural P ON C.cod_persona = P.cod_persona " +
                    "WHERE C.cod_comunicado = ? " +
                    "AND C.ESTADO_COMUNICADO = 'A' " +
                    "ORDER BY C.fecha_comunicado" ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codComunicado);
            rs = ps.executeQuery();
            while(rs.next()){
               
                oComunicado.setNombre(rs.getString(1));
                oComunicado.setTitulo(rs.getString(2));
                oComunicado.setDescripcion(rs.getString(3));
                oComunicado.setFecha(rs.getString(4));
                oComunicado.setHoraInicio(rs.getString(5));
                oComunicado.setHoraFin(rs.getString(6));
                oComunicado.setLugar(rs.getString(7));                
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return oComunicado;
    }

    public static ProyectosComunicados  detalleComunicadoPorCodComunicadoPariente(int codComunicado){
        ProyectosComunicados oComunicado = new ProyectosComunicados();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "SELECT P.apell_paterno || ' ' || P.apell_materno || ', ' || P.primer_nombre AS NOMBRE,        " +
                "C.nombre_comunicado,G.nombre, A.nombre, N.nombre, C.descripcion_comunicado, to_char(C.fecha_comunicado,'DD/MM/YYYY'), " +
                "C.horainicio_comunicado,C.horafin_comunicado, C.lugar_comunicado " +
                "FROM comunicados C " +
                "INNER JOIN p_natural P ON C.cod_persona = P.cod_persona " +
                "INNER JOIN nivel_grado NG ON NG.cod_nivelgrado = C.cod_nivelgrado " +
                "INNER JOIN grado G ON G.cod_grado = NG.cod_grado " +
                "INNER JOIN nivel N ON N.cod_nivel = NG.cod_nivel " +
                "INNER JOIN AULA A ON A.cod_aula = C.cod_aula " +
                "WHERE C.cod_comunicado = ?" ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codComunicado);
            rs = ps.executeQuery();
            while(rs.next()){
                
                oComunicado.setNombre(rs.getString(1));
                oComunicado.setTitulo(rs.getString(2));
                oComunicado.setGrado(rs.getString(3));
                oComunicado.setSeccion(rs.getString(4));
                oComunicado.setNivel(rs.getString(5));
                oComunicado.setDescripcion(rs.getString(6));
                oComunicado.setFecha(rs.getString(7));
                oComunicado.setHoraInicio(rs.getString(8));
                oComunicado.setHoraFin(rs.getString(9));
                oComunicado.setLugar(rs.getString(10));
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return oComunicado;
    }

    public static boolean registroProyecto(ProyectosComunicados oProyecto){
        boolean rpta = false;
        Connection cn = null;

        PreparedStatement ps = null;

        String sql = "INSERT INTO proyecto(cod_proyecto,nombre_proyecto, formato_proyecto, integrantes_proyecto, " +
                "descripcion_proyecto, materiales_proyecto, referencias_proyecto,             " +
                "fechaentrega_proyecto, cod_tema, cod_aula) " +
                "VALUES(nextval('PROYECTO_SEQ'),?,?,?,?,?,?,to_date(?,'DD/MM/YYYY'),?,?)" ;
        try{
            cn = Conexion.getConexion();
            cn.setAutoCommit(false);
            ps = cn.prepareStatement(sql);
            ps.setString(1, oProyecto.getNombre());
            ps.setString(2, oProyecto.getFormato());
            ps.setString(3, oProyecto.getIntegrantes());
            ps.setString(4, oProyecto.getDescripcion());
            ps.setString(5, oProyecto.getMateriales());
            ps.setString(6, oProyecto.getReferencias());
            ps.setString(7, oProyecto.getFecha());
            ps.setInt(8, oProyecto.getCodTema());
            ps.setInt(9, oProyecto.getCodAula());
            rpta = ps.executeUpdate()==1?true:false;
            if(rpta){
                Conexion.confirmarTransaccion(cn);
            }else{
                Conexion.anularTransaccion(cn);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return rpta;
    }

    public static boolean actualizarProyecto(ProyectosComunicados oProyecto){
        boolean rpta = false;
        Connection cn = null;

        PreparedStatement ps = null;

        String sql = " UPDATE proyecto "
                + " SET nombre_proyecto = ? ,"
                + " formato_proyecto = ? , "
                + " integrantes_proyecto = ? , "
                + " descripcion_proyecto = ? , "
                + " materiales_proyecto = ?, "
                + " referencias_proyecto = ?, "
                + " fechaentrega_proyecto = to_date(?,'DD/MM/YYYY'), "
                + " cod_tema = ?,"
                + " cod_aula = ? "
                + " WHERE cod_proyecto = ? " ;
        try{
            cn = Conexion.getConexion();
            cn.setAutoCommit(false);
            ps = cn.prepareStatement(sql);
            ps.setString(1, oProyecto.getNombre());
            ps.setString(2, oProyecto.getFormato());
            ps.setString(3, oProyecto.getIntegrantes());
            ps.setString(4, oProyecto.getDescripcion());
            ps.setString(5, oProyecto.getMateriales());
            ps.setString(6, oProyecto.getReferencias());
            ps.setString(7, oProyecto.getFecha());
            ps.setInt(8, oProyecto.getCodTema());
            ps.setInt(9, oProyecto.getCodAula());
            ps.setInt(10, oProyecto.getCodProyecto());
            rpta = ps.executeUpdate()==1?true:false;
            if(rpta){
                Conexion.confirmarTransaccion(cn);
            }else{
                Conexion.anularTransaccion(cn);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return rpta;
    }
    public static boolean verificarComunicado(String estado,int c){
        boolean rpta = false;
        Connection cn = null;

        PreparedStatement ps = null;

        String sql = " UPDATE comunicado "
                + " SET estado=? "
                + " WHERE cod_comunicado = ? " ;
        try{
            cn = Conexion.getConexion();
            cn.setAutoCommit(false);
            ps = cn.prepareStatement(sql);
            ps.setString(1, estado);
            ps.setInt(2, c);
           
            rpta = ps.executeUpdate()==1?true:false;
            if(rpta){
                Conexion.confirmarTransaccion(cn);
            }else{
                Conexion.anularTransaccion(cn);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return rpta;
    }
    public static boolean actualizarComunicado(ProyectosComunicados oComunicado){
        boolean rpta = false;
        Connection cn = null;

        PreparedStatement ps = null;

        String sql = " UPDATE comunicado "
                + " SET nombre_comunicado = ? ,"
                + " descripcion_comunicado = ? , "
                + " fecha_comunicado = = to_date(?,'DD/MM/YYYY'), , "
                + " horaInicio_comunicado = ? , "
                + " horaFin_comunicado = ?, "
                + " lugar_comunicado = ?, "
                + " cod_persona = ?, "
                + " cod_nivelgrado = ?, "
                + " cod_tipocomunicado = ?,"
                + " cod_aula = ? "
                + " WHERE cod_comunicado = ? " ;
        try{
            cn = Conexion.getConexion();
            cn.setAutoCommit(false);
            ps = cn.prepareStatement(sql);
            ps.setString(1, oComunicado.getNombre());
            ps.setString(2, oComunicado.getDescripcion());
            ps.setString(3, oComunicado.getFecha());
            ps.setString(4, oComunicado.getHoraInicio());
            ps.setString(5, oComunicado.getHoraFin());
            ps.setString(6, oComunicado.getLugar());
            ps.setInt(7, oComunicado.getCodPersona());
            ps.setInt(8, oComunicado.getCodNivelGrado());
            ps.setInt(9, oComunicado.getCodTipo());
            ps.setInt(10, oComunicado.getCodAula());
            ps.setInt(11, oComunicado.getCodComunicado());
            rpta = ps.executeUpdate()==1?true:false;
            if(rpta){
                Conexion.confirmarTransaccion(cn);
            }else{
                Conexion.anularTransaccion(cn);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return rpta;
    }

     public static Vector<ProyectosComunicados>  ListaCabeceraProyectosPorNivelGradoSeccionCurso(int codNivelGrado, int codSeccion, int codCurso){
        ProyectosComunicados oComunicado = null;
        Vector<ProyectosComunicados> LComunicados = new Vector<ProyectosComunicados>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "SELECT P.cod_proyecto, P.nombre_proyecto,to_char(P.fechaentrega_proyecto,'DD/MM/YYYY') , C.nombre " +
                "FROM proyecto P " +
                "INNER JOIN tema_silabus T ON P.cod_tema = T.cod_tema " +
                "INNER JOIN CURSO C ON C.cod_curso = T.cod_curso " +
                "WHERE T.cod_nivel_grado = ? " +
                "AND P.cod_aula = ? " +
                "AND T.cod_curso = ? " +
                "AND P.fechaentrega_proyecto >= current_date " +
                "ORDER BY P.fechaentrega_proyecto" ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codNivelGrado);
            ps.setInt(2, codSeccion);
            ps.setInt(3, codCurso);
            rs = ps.executeQuery();
            while(rs.next()){
                oComunicado = new ProyectosComunicados();
                oComunicado.setCodProyecto(rs.getInt(1));
                oComunicado.setNombre(rs.getString(2));
                oComunicado.setFecha(rs.getString(3));
                oComunicado.setCurso(rs.getString(4));
                LComunicados.add(oComunicado);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LComunicados;
    }

   public static ProyectosComunicados  ProyectoPorCodProyecto(int codProyecto){
        ProyectosComunicados oComunicado = new ProyectosComunicados();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "SELECT P.nombre_proyecto, P.formato_proyecto, P.integrantes_proyecto, " +
                "P.descripcion_proyecto, P.materiales_proyecto, P.referencias_proyecto, " +
                "to_char(P.fechaentrega_proyecto,'DD/MM/YYYY'), C.nombre, T.nombre_tema, C.cod_curso, P.cod_tema, "
                + " T.cod_nivel_grado, P.cod_proyecto " +
                "FROM proyecto P " +
                "INNER JOIN tema_silabus T ON P.cod_tema = T.cod_tema " +
                "INNER JOIN CURSO C ON C.cod_curso = T.cod_curso " +
                
                "WHERE P.cod_proyecto = ? " +
                "ORDER BY P.fechaentrega_proyecto" ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codProyecto);
            rs = ps.executeQuery();
            while(rs.next()){
                
                oComunicado.setNombre(rs.getString(1));
                oComunicado.setFormato(rs.getString(2));
                oComunicado.setIntegrantes(rs.getString(3));
                oComunicado.setDescripcion(rs.getString(4));
                oComunicado.setMateriales(rs.getString(5));
                oComunicado.setReferencias(rs.getString(6));
                oComunicado.setFecha(rs.getString(7));               
                oComunicado.setCurso(rs.getString(8));
                oComunicado.setTema(rs.getString(9));
                oComunicado.setCodCurso(rs.getInt(10));
                oComunicado.setCodTema(rs.getInt(11));
                oComunicado.setCodNivelGrado(rs.getInt(12));
                oComunicado.setCodProyecto(rs.getInt(13));
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return oComunicado;
    }

   public static Vector<ProyectosComunicados>  ListaComunicadosPorProfesorYRangoFechas(int codPersonaProfesor, String fechaDesde, String fechaHasta){
        ProyectosComunicados oComunicado = null;
        Vector<ProyectosComunicados> LComunicados = new Vector<ProyectosComunicados>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "select C.cod_comunicado, C.nombre_comunicado, to_char(C.fecha_comunicado, 'DD/MM/YYYY'), G.nombre, " +
                "A.nombre, NV.nombre, T.nombre_tipocomunicado, C.estado_comunicado " +
                "FROM comunicados C " +
                "INNER JOIN nivel_grado N ON N.cod_nivelgrado = C.cod_nivelgrado " +
                "INNER JOIN tipo_comunicado T ON T.cod_tipocomunicado = C.cod_tipocomunicado " +
                "INNER JOIN grado G ON G.cod_grado = N.cod_grado " +
                "INNER JOIN NIVEL NV ON NV.cod_nivel = N.cod_nivel " +
                "INNER JOIN aula A ON A.cod_aula = C.cod_aula " +
                "WHERE C.cod_persona = ? " +
                "AND C.fecha_comunicado between TO_DATE(?,'DD/MM/YYYY') AND TO_DATE(?,'DD/MM/YYYY') " +
                "order by C.fecha_comunicado"  ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codPersonaProfesor);
            ps.setString(2, fechaDesde);
            ps.setString(3, fechaHasta);
            rs = ps.executeQuery();
            while(rs.next()){
                oComunicado = new ProyectosComunicados();
                oComunicado.setCodComunicado(rs.getInt(1));
                oComunicado.setNombre(rs.getString(2));
                oComunicado.setFecha(rs.getString(3));
                oComunicado.setGrado(rs.getString(4));
                oComunicado.setSeccion(rs.getString(5));
                oComunicado.setNivel(rs.getString(6));
                oComunicado.setTipo(rs.getString(7));
                oComunicado.setEstado(rs.getString(8));
                LComunicados.add(oComunicado);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LComunicados;
    }
   
   public static ArrayList<ProyectosComunicados>  ListaComunicadosPorProfesor(int codPersonaProfesor){
        ProyectosComunicados oComunicado = null;
        ArrayList<ProyectosComunicados> LComunicados = new ArrayList<ProyectosComunicados>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "select C.cod_comunicado, C.nombre_comunicado, to_char(C.fecha_comunicado, 'DD/MM/YYYY'), G.nombre, " +
                "A.nombre, NV.nombre, T.nombre_tipocomunicado, C.estado_comunicado " +
                "FROM comunicados C " +
                "INNER JOIN nivel_grado N ON N.cod_nivelgrado = C.cod_nivelgrado " +
                "INNER JOIN tipo_comunicado T ON T.cod_tipocomunicado = C.cod_tipocomunicado " +
                "INNER JOIN grado G ON G.cod_grado = N.cod_grado " +
                "INNER JOIN NIVEL NV ON NV.cod_nivel = N.cod_nivel " +
                "INNER JOIN aula A ON A.cod_aula = C.cod_aula " +
                "WHERE C.cod_persona = ? " +
                "AND C.fecha_comunicado > current_date " +
                "order by C.fecha_comunicado"  ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codPersonaProfesor);
            rs = ps.executeQuery();
            while(rs.next()){
                oComunicado = new ProyectosComunicados();
                oComunicado.setCodComunicado(rs.getInt(1));
                oComunicado.setNombre(rs.getString(2));
                oComunicado.setFecha(rs.getString(3));
                oComunicado.setGrado(rs.getString(4));
                oComunicado.setSeccion(rs.getString(5));
                oComunicado.setNivel(rs.getString(6));
                oComunicado.setTipo(rs.getString(7));
                oComunicado.setEstado(rs.getString(8));
                LComunicados.add(oComunicado);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LComunicados;
    }

   public static Vector<ProyectosComunicados>  ListaProyectosPorProfesorYRangoFechas(int codPersonaProfesor){
        ProyectosComunicados oComunicado = null;
        Vector<ProyectosComunicados> LComunicados = new Vector<ProyectosComunicados>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "select PR.cod_proyecto, PR.nombre_proyecto,C.nombre,T.nombre_tema, " +
                "to_char(PR.fechaentrega_proyecto, 'DD/MM/YYYY') , G.nombre , A.nombre , NV.nombre " +
                "FROM proyecto PR " +
                "inner join tema_silabus T ON T.cod_tema =PR.cod_tema " +
                "INNER JOIN CURSO C ON C.cod_curso = T.cod_curso " +
                "INNER JOIN profesor_curso P ON P.cod_curso= C.cod_curso " +
                "INNER JOIN profesor PF ON PF.cod_persona = P.cod_persona " +
                "INNER JOIN nivel_grado N ON T.cod_nivel_grado = N.cod_nivelgrado " +
                "INNER JOIN nivel NV ON NV.cod_nivel = N.cod_nivel " +
                "INNER JOIN grado G ON G.cod_grado = N.cod_grado " +
                "INNER JOIN aula A ON A.cod_aula = PR.cod_aula " +
                "WHERE P.cod_persona = ? " +
                "AND PR.fechaentrega_proyecto > current_date " +
                "order by PR.fechaentrega_proyecto"  ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codPersonaProfesor);
            rs = ps.executeQuery();
            while(rs.next()){
                oComunicado = new ProyectosComunicados();
                oComunicado.setCodProyecto(rs.getInt(1));
                oComunicado.setNombre(rs.getString(2));
                oComunicado.setCurso(rs.getString(3));
                oComunicado.setTema(rs.getString(4));
                oComunicado.setFecha(rs.getString(5));
                oComunicado.setGrado(rs.getString(6));
                oComunicado.setSeccion(rs.getString(7));
                oComunicado.setNivel(rs.getString(8));
                LComunicados.add(oComunicado);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LComunicados;
    }
   
   public static ArrayList<ProyectosComunicados>  ListaComunicados(int tipoComunicado){
        ProyectosComunicados oComunicado = null;
        ArrayList<ProyectosComunicados> LComunicados = new ArrayList<ProyectosComunicados>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "SELECT C.cod_comunicado, P.apell_paterno || ' ' || P.apell_materno || ', ' || P.primer_nombre, " +
                "G.nombre,A.nombre, N.nombre, C.cod_tipocomunicado " +
                "FROM comunicados C " +
                "INNER JOIN p_natural P ON C.cod_persona = P.cod_persona " +
                "INNER JOIN aula A ON A.cod_aula = C.cod_aula " +
                "INNER JOIN tipo_comunicado TP ON TP.cod_tipocomunicado = C.cod_tipocomunicado " +
                "INNER JOIN nivel_grado NG ON NG.cod_nivelgrado = C.cod_nivelgrado " +
                "INNER JOIN grado G ON G.cod_grado = NG.cod_grado " +
                "INNER JOIN nivel N ON N.cod_nivel = NG.cod_nivel " +
                "WHERE C.cod_tipocomunicado = ? " +
                "AND C.fecha_comunicado > current_date " +
                "ORDER BY C.fecha_comunicado"  ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1, tipoComunicado);            
            rs = ps.executeQuery();
            while(rs.next()){
                oComunicado = new ProyectosComunicados();
                oComunicado.setCodComunicado(rs.getInt(1));
                oComunicado.setPersona(rs.getString(2));
                oComunicado.setGrado(rs.getString(3));
                oComunicado.setSeccion(rs.getString(4));
                oComunicado.setNivel(rs.getString(5));
                oComunicado.setCodTipo(rs.getInt(6));
                LComunicados.add(oComunicado);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LComunicados;
    }


   public ArrayList<ProyectosComunicados>  listaComunicadosPendiente(){
        ProyectosComunicados oComunicado = null;
        ArrayList<ProyectosComunicados> LComunicados = new ArrayList<ProyectosComunicados>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "SELECT C.cod_comunicado, P.apell_paterno || ' ' || P.apell_materno || ', ' || P.primer_nombre, " +
                "C.nombre_comunicado,C.fecha_comunicado, G.nombre || ' \"' || A.nombre || '\" - ' || N.nombre, TP.nombre_tipocomunicado " +
                "FROM comunicados C  " +
                "INNER JOIN p_natural P ON C.cod_persona = P.cod_persona  " +
                "INNER JOIN aula A ON A.cod_aula = C.cod_aula  " +
                "INNER JOIN tipo_comunicado TP ON TP.cod_tipocomunicado = C.cod_tipocomunicado  " +
                "INNER JOIN nivel_grado NG ON NG.cod_nivelgrado = C.cod_nivelgrado " +
                "INNER JOIN grado G ON G.cod_grado = NG.cod_grado  " +
                "INNER JOIN nivel N ON N.cod_nivel = NG.cod_nivel  " +
                "WHERE C.fecha_comunicado > current_date  " +
                "AND C.estado_comunicado = 'P' " +
                "ORDER BY C.fecha_comunicado "  ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            rs = ps.executeQuery();
            while(rs.next()){
                oComunicado = new ProyectosComunicados();
                oComunicado.setCodComunicado(rs.getInt(1));
                oComunicado.setPersona(rs.getString(2));
                oComunicado.setNombre(rs.getString(3));
                oComunicado.setFecha(rs.getString(4));
                oComunicado.setGrado(rs.getString(5));
                oComunicado.setTipo(rs.getString(6));
                LComunicados.add(oComunicado);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LComunicados;
    }

   public ArrayList<ProyectosComunicados>  listaComunicadosAprobado(){
        ProyectosComunicados oComunicado = null;
        ArrayList<ProyectosComunicados> LComunicados = new ArrayList<ProyectosComunicados>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "SELECT C.cod_comunicado, P.apell_paterno || ' ' || P.apell_materno || ', ' || P.primer_nombre, " +
                "C.nombre_comunicado,C.fecha_comunicado, G.nombre || ' \"' || A.nombre || '\" - ' || N.nombre, TP.nombre_tipocomunicado " +
                "FROM comunicados C  " +
                "INNER JOIN p_natural P ON C.cod_persona = P.cod_persona  " +
                "INNER JOIN aula A ON A.cod_aula = C.cod_aula  " +
                "INNER JOIN tipo_comunicado TP ON TP.cod_tipocomunicado = C.cod_tipocomunicado  " +
                "INNER JOIN nivel_grado NG ON NG.cod_nivelgrado = C.cod_nivelgrado " +
                "INNER JOIN grado G ON G.cod_grado = NG.cod_grado  " +
                "INNER JOIN nivel N ON N.cod_nivel = NG.cod_nivel  " +
                "WHERE C.fecha_comunicado > current_date  " +
                "AND C.estado_comunicado = 'A' " +
                "ORDER BY C.fecha_comunicado "  ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            rs = ps.executeQuery();
            while(rs.next()){
                oComunicado = new ProyectosComunicados();
                oComunicado.setCodComunicado(rs.getInt(1));
                oComunicado.setPersona(rs.getString(2));
                oComunicado.setNombre(rs.getString(3));
                oComunicado.setFecha(rs.getString(4));
                oComunicado.setGrado(rs.getString(5));
                oComunicado.setTipo(rs.getString(6));
                LComunicados.add(oComunicado);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LComunicados;
    }

   public ArrayList<ProyectosComunicados>  listaComunicadosDenegado(){
        ProyectosComunicados oComunicado = null;
        ArrayList<ProyectosComunicados> LComunicados = new ArrayList<ProyectosComunicados>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "SELECT C.cod_comunicado, P.apell_paterno || ' ' || P.apell_materno || ', ' || P.primer_nombre, " +
                "C.nombre_comunicado,C.fecha_comunicado, G.nombre || ' \"' || A.nombre || '\" - ' || N.nombre, TP.nombre_tipocomunicado " +
                "FROM comunicados C  " +
                "INNER JOIN p_natural P ON C.cod_persona = P.cod_persona  " +
                "INNER JOIN aula A ON A.cod_aula = C.cod_aula  " +
                "INNER JOIN tipo_comunicado TP ON TP.cod_tipocomunicado = C.cod_tipocomunicado  " +
                "INNER JOIN nivel_grado NG ON NG.cod_nivelgrado = C.cod_nivelgrado " +
                "INNER JOIN grado G ON G.cod_grado = NG.cod_grado  " +
                "INNER JOIN nivel N ON N.cod_nivel = NG.cod_nivel  " +
                "WHERE C.fecha_comunicado > current_date  " +
                "AND C.estado_comunicado = 'D' " +
                "ORDER BY C.fecha_comunicado "  ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            rs = ps.executeQuery();
            while(rs.next()){
                oComunicado = new ProyectosComunicados();
                oComunicado.setCodComunicado(rs.getInt(1));
                oComunicado.setPersona(rs.getString(2));
                oComunicado.setNombre(rs.getString(3));
                oComunicado.setFecha(rs.getString(4));
                oComunicado.setGrado(rs.getString(5));
                oComunicado.setTipo(rs.getString(6));
                LComunicados.add(oComunicado);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LComunicados;
    }
   
      public static ProyectosComunicados  detalleComunicados(int codComunicado){
        ProyectosComunicados oComunicado = new ProyectosComunicados();        
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "SELECT C.cod_comunicado, P.apell_paterno || ' ' || P.apell_materno || ', ' || P.primer_nombre, " +
                "C.nombre_comunicado, C.horainicio_comunicado, C.horafin_comunicado, C.lugar_comunicado, C.fecha_comunicado, " +
                "C.descripcion_comunicado, G.nombre,A.nombre, N.nombre, C.estado_comunicado " +
                "FROM comunicados C " +
                "INNER JOIN p_natural P ON C.cod_persona = P.cod_persona " +
                "INNER JOIN aula A ON A.cod_aula = C.cod_aula " +
                "INNER JOIN tipo_comunicado TP ON TP.cod_tipocomunicado = C.cod_tipocomunicado " +
                "INNER JOIN nivel_grado NG ON NG.cod_nivelgrado = C.cod_nivelgrado " +
                "INNER JOIN grado G ON G.cod_grado = NG.cod_grado " +
                "INNER JOIN nivel N ON N.cod_nivel = NG.cod_nivel " +
                "WHERE C.fecha_comunicado > current_date " +
                "AND C.cod_comunicado = ? " +
                "ORDER BY C.fecha_comunicado"  ; 
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            
            ps.setInt(1, codComunicado);  
            rs = ps.executeQuery();
            while(rs.next()){
              
                oComunicado.setCodComunicado(rs.getInt(1));
                oComunicado.setPersona(rs.getString(2));
                oComunicado.setNombre(rs.getString(3));
                oComunicado.setHoraInicio(rs.getString(4));
                oComunicado.setHoraFin(rs.getString(5));  
                oComunicado.setLugar(rs.getString(6)); 
                oComunicado.setFecha(rs.getString(7)); 
                oComunicado.setDescripcion(rs.getString(8)); 
                oComunicado.setGrado(rs.getString(9));
                oComunicado.setSeccion(rs.getString(10)); 
                oComunicado.setNivel(rs.getString(11));
                oComunicado.setEstado(rs.getString(12));
                
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return oComunicado;
    }
      
      public static ProyectosComunicados  modificarComunicado(int codComunicado){
        ProyectosComunicados oComunicado = new ProyectosComunicados();        
         Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;

        String sql = "SELECT C.cod_comunicado, C.nombre_comunicado, C.horainicio_comunicado, " +
                //"C.horafin_comunicado, C.lugar_comunicado, C.fecha_comunicado, C.descripcion_comunicado, T.nombre_tipocomunicado  " +
                //"G.nombre, T.nombre_tipocomunicado, G.cod_grado, C.cod_tipocomunicado, C.cod_nivel_grado " +
                "C.horafin_comunicado, C.lugar_comunicado, C.fecha_comunicado, C.descripcion_comunicado, " +
                "  C.cod_tipocomunicado, C.cod_nivelgrado " +

                "FROM comunicados C " +
                
//                "INNER JOIN tipo_comunicado T ON T.cod_tipocomunicado = C.cod_tipocomunicado " +
//                "INNER JOIN nivel_grado NG ON NG.cod_nivelgrado = C.cod_nivelgrado " +
//                "INNER JOIN grado G ON G.cod_grado = NG.cod_grado " +
                //"INNER JOIN tipo_comunicado T ON T.cod_tipocomunicado = C.cod_tipocomunicado " +

//                "INNER JOIN aula A ON A.cod_aula = C.cod_aula " +
//                "INNER JOIN tipo_comunicado TP ON TP.cod_tipocomunicado = C.cod_tipocomunicado " +
                
             //   "INNER JOIN nivel_grado NG ON NG.cod_nivelgrado = C.cod_nivel_grado " +
            //    "INNER JOIN tipo_comunicado TP ON TP.cod_tipocomunicado = C.cod_tipocomunicado" +
                
          //    "INNER JOIN nivel N ON C.cod_nivel = N.cod_nivel " +
            //   "INNER JOIN grado G ON C.cod_grado = G.cod_grado " +
               
              
                "INNER JOIN p_natural P ON C.cod_persona = P.cod_persona " +
                
                "WHERE C.cod_comunicado = ? " +
                "ORDER BY C.fecha_comunicado"  ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            
            ps.setInt(1, codComunicado);  
            rs = ps.executeQuery();
            while(rs.next()){
              
                oComunicado.setCodComunicado(rs.getInt(1));
                oComunicado.setNombre(rs.getString(2));
                oComunicado.setHoraInicio(rs.getString(3));
                oComunicado.setHoraFin(rs.getString(4));  
                oComunicado.setLugar(rs.getString(5)); 
                oComunicado.setFecha(rs.getString(6)); 
                oComunicado.setDescripcion(rs.getString(7)); 
//                oComunicado.setGrado(rs.getString(8));
//                oComunicado.setTipo(rs.getString(8));
//                oComunicado.setCodGrado(rs.getInt(10));
               //oComunicado.setCodTipo(rs.getInt(8));
//                oComunicado.setCodNivelGrado(rs.getInt(12));

               // oComunicado.setDescripcion(rs.getString(7));
                //oComunicado.setCodGrado(rs.getInt(8));
                oComunicado.setCodTipo(rs.getInt(8));
                oComunicado.setCodNivelGrado(rs.getInt(9));

            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return oComunicado;
    }

    public boolean modiicaComunicado(int codComunicado, String accion){
        boolean rpta = false;
        Connection cn = null;

        PreparedStatement ps = null;

        String sql = "UPDATE comunicados " +
                "SET estado_comunicado = ? " +
                "WHERE cod_comunicado = ? ";
             
        try{
            cn = Conexion.getConexion();
            cn.setAutoCommit(false);
            ps = cn.prepareStatement(sql);
            ps.setString(1, accion );
            ps.setInt(2, codComunicado);
            rpta = ps.executeUpdate()==1?true:false;
            if(rpta){
                Conexion.confirmarTransaccion(cn);
            }else{
                Conexion.anularTransaccion(cn);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return rpta;
    }

   public static boolean eliminarComunicado(int codComunicado){
        boolean rpta = false;
        Connection cn = null;

        PreparedStatement ps = null;

        String sql = "DELETE FROM comunicados  WHERE cod_comunicado = ?" ;
        try{
            cn = Conexion.getConexion();
            cn.setAutoCommit(false);
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codComunicado);
            rpta = ps.executeUpdate()==1?true:false;
            if(rpta){
                Conexion.confirmarTransaccion(cn);
            }else{
                Conexion.anularTransaccion(cn);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return rpta;
    }

      public static boolean eliminarProyecto(int codProyecto){
        boolean rpta = false;
        Connection cn = null;

        PreparedStatement ps = null;

        String sql = "DELETE FROM proyecto  WHERE cod_proyecto = ?" ;
        try{
            cn = Conexion.getConexion();
            cn.setAutoCommit(false);
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codProyecto);
            rpta = ps.executeUpdate()==1?true:false;
            if(rpta){
                Conexion.confirmarTransaccion(cn);
            }else{
                Conexion.anularTransaccion(cn);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return rpta;
    }


    /**
     * @return the codComunicado
     */
    public int getCodComunicado() {
        return codComunicado;
    }

    /**
     * @param codComunicado the codComunicado to set
     */
    public void setCodComunicado(int codComunicado) {
        this.codComunicado = codComunicado;
    }

    /**
     * @return the titulo
     */
    public String getTitulo() {
        return titulo;
    }

    /**
     * @param titulo the titulo to set
     */
    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    /**
     * @return the codTema
     */
    public int getCodTema() {
        return codTema;
    }

    /**
     * @param codTema the codTema to set
     */
    public void setCodTema(int codTema) {
        this.codTema = codTema;
    }

    /**
     * @return the curso
     */
    public String getCurso() {
        return curso;
    }

    /**
     * @param curso the curso to set
     */
    public void setCurso(String curso) {
        this.curso = curso;
    }

    /**
     * @return the tema
     */
    public String getTema() {
        return tema;
    }

    /**
     * @param tema the tema to set
     */
    public void setTema(String tema) {
        this.tema = tema;
    }

    /**
     * @return the grado
     */
    public String getGrado() {
        return grado;
    }

    /**
     * @param grado the grado to set
     */
    public void setGrado(String grado) {
        this.grado = grado;
    }

    /**
     * @return the seccion
     */
    public String getSeccion() {
        return seccion;
    }

    /**
     * @param seccion the seccion to set
     */
    public void setSeccion(String seccion) {
        this.seccion = seccion;
    }

    /**
     * @return the nivel
     */
    public String getNivel() {
        return nivel;
    }

    /**
     * @param nivel the nivel to set
     */
    public void setNivel(String nivel) {
        this.nivel = nivel;
    }

    /**
     * @return the tipo
     */
    public String getTipo() {
        return tipo;
    }

    /**
     * @param tipo the tipo to set
     */
    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public String getPersona() {
        return persona;
    }

    public void setPersona(String persona) {
        this.persona = persona;
    }

    /**
     * @return the estado
     */
    public String getEstado() {
        return estado;
    }

    /**
     * @param estado the estado to set
     */
    public void setEstado(String estado) {
        this.estado = estado;
    }
}
